﻿#define  _CRT_SECURE_NO_WARNINGS
//3的幂
//给定一个整数，写一个函数来判断它是否是 3 的幂次方。如果是，返回 true ；否则，返回 false 。
//
//整数 n 是 3 的幂次方需满足：存在整数 x 使得 n == 3x
//
//来源：力扣（LeetCode）
//链接：https ://leetcode.cn/problems/power-of-three
//著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
//自己写的：
//bool isPowerOfThree(int n) {
//    if (n <= 0)//因为是整数所以小于等于0就一定不是3的幂
//        return false;
//    if (n == 1)//1是3的0次方
//        return true;
//    int flag = 1;//制定一个标志，假设放进去的数是3的幂
//    while (n > 1) {
//
//        if (n % 3 != 0) {
//            flag = 0;//n一直除于3，假设在n>1时有n不是3的倍数那n就不是3的幂
//            //flag重置为0
//        }
//        n /= 3;
//    }
//    if (flag)//是3的幂就返回true
//        return true;
//    return false;
//}
//递归解法：
bool isPowerOfThree(int n) {
	if (n < 1)//小于1就一定不是3的幂
		return false;
	if (n == 1)//1是3的0次幂
		return true;
	if (n % 3==0)//是3的倍数就要就递归
		return  isPowerOfThree(n / 3);
	return false;//递归完了不是就返回false
}